package com.day15_Stream;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @ClassName: Collection_demo
 * @Author: zw
 * @Description: 出百万拳，行万里路；
 * @Create 2024/3/31-00:10
 * @Version 1.0
 */
public class Collection_demo {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("sunwufan");
        list.add("sunwukong");
        list.add("guixianren");
        list.add("kelin");
        list.add("tianjingfan");
        list.add("sunwukong");
        list.add("sunwukongyeye");
        // 得到 名字sun开头的流
        Stream<String> sun = list.stream().filter(s -> s.startsWith("sun"));
        // 把sun 流收集到list集合中
        List<String> namsList = sun.collect(Collectors.toList());
        for (String i: namsList) {
            System.out.println(i);
        }
        // 把sun流收集到set集合中
        System.out.println("收集到set集合中---");
        Stream<String> sun1 = list.stream().sorted((s1, s2) -> {
            return s1.length() - s2.length();
        }).filter(s -> s.startsWith("sun"));
//        sun1.forEach(System.out::println);
        Set<String> namsSet = sun1.collect(Collectors.toSet());
        for (String s: namsSet) {
            System.out.println(s);
        }

        //有一个字符串数组，每一个字符数组由姓名，和年龄数据组合而成
        String[] strArr = {"林青霞，20","张曼玉，32", "王祖贤，45"};
        // 需求： 得到字符串中 年龄数据大于28的流
        Stream<String> stringStream = Stream.of(strArr).filter(s -> Integer.parseInt(s.split("，")[1]) > 20);
        // 需求：把Stream流操作完毕的数据收集到Map集合中并遍历，字符串中的姓名做键。年龄做值
        // toMap 第一个参数是key， 第二个是value
        Map<String, Integer> map = stringStream.collect(
                Collectors.toMap(s -> s.split("，")[0], s -> Integer.parseInt(s.split("，")[1]))
        );
        System.out.println(map);
        Set<String> keySet = map.keySet();
        for (String key: keySet) {
            Integer value = map.get(key);
            System.out.println(key+":"+value);
        }
    }
}
